home *** CD-ROM | disk | FTP | other *** search
/ Libris Britannia 4 / science library(b).zip / science library(b) / HAM_RAD / PROPAGAT / 1004A.ZIP / TROPO.BAS < prev    next >
BASIC Source File  |  1987-05-12  |  5KB  |  149 lines

  1. 10 REM TROPOSCATTER PATH LOSS CALCULATOR
  2. 20 REM BY R.P.BLACKWELL, G8IZV
  3. 30 REM BASED ON THE WORK OF G3YGF
  4. 40 DIM H1(2),H2(2),D1(2),A(2),A$(2),B(2)
  5. 50 R1=8497 :PI=3.14151
  6. 60 DEF FNX(X)=LOG(X)*.43432
  7. 70 DEF FNY(X)= INT(10*X+.5)/10
  8. 80 N=1:GOSUB 1400: REM Clear all parameters,
  9. 90 N=2:GOSUB 1400: REM for both stations.
  10. 100 PRINT: PRINT TAB(10);"TROPOSCATTER PATH LOSS CALCULATOR":PRINT
  11. 110 N=1:GOSUB 630
  12. 120 N=2:GOSUB 630
  13. 130 PRINT:PRINT "Frequency of operation (MHz) ";
  14. 140 INPUT F
  15. 150 PRINT 
  16. 160 IF F<=30 THEN PRINT "Too low!":PRINT CHR$(7):GOTO 130
  17. 170 REM SCATTER ANGLE CALCULATION
  18. 180 B0=D*180/(R1*PI)
  19. 190 N=1:GOSUB 1110
  20. 200 N=2:GOSUB 1110
  21. 210 IF(D<=D1(1))AND(D<=D1(2)) THEN P$="Line-of-sight" ELSE P$="Troposcatter"
  22. 220 B=B0+B(1)+B(2)
  23. 230 REM FREE SPACE PATH LOSS
  24. 240 L1=32.5+20*FNX(D)+20*FNX(F)
  25. 250 IF P$="Line-of-sight" THEN L2=0:L3=0:GOTO 310
  26. 260 L2=21+10*B+10*FNX(F): REM scattering loss
  27. 270 REM aperture coupling loss
  28. 280 A1=SQR(A(1)*A(2))
  29. 290 L3=(2*B/A1)+2
  30. 300 REM total path loss
  31. 310 L0=L1+L2+L3
  32. 320 PRINT " ";P$;" path  ";A$(1);" to ";A$(2)
  33. 330 PRINT " for a frequency of ";F;" MHz."
  34. 340 PRINT:PRINT " Path loss ";FNY(L0);" dB."
  35. 350 IF P$="Line-of-sight" GOTO 390 ELSE PRINT
  36. 360 PRINT "Station ";A$(1);" loss contribution ";FNY(10*B(1));" dB."
  37. 370 PRINT "Station ";A$(2);" loss contribution ";FNY(10*B(2));" dB."
  38. 380 PRINT:PRINT " Scattering angle ";FNY(B);" degrees."
  39. 390 PRINT:INPUT "Press RETURN to continue",X$
  40. 400 PRINT:PRINT
  41. 410 PRINT "In the next run, do you wish:"
  42. 420 PRINT TAB(23);"1     to alter everything"
  43. 430 PRINT TAB(23);"2     to alter station A parameters"
  44. 440 PRINT TAB(23);"3     to alter station B parameters"
  45. 450 PRINT TAB(23);"4     to correct troposcatter path loss for refraction"
  46. 460 PRINT TAB(23);"5     to change frequency, and also antenna beamwidths"
  47. 470 PRINT TAB(20);"or 6     to quit"
  48. 480 PRINT:INPUT"What number";X
  49. 490 IF X=1 THEN 90
  50. 500 IF X=2 THEN 1070
  51. 510 IF X=3 THEN 1080
  52. 520 IF X=4 THEN 560
  53. 530 IF X=5 THEN 990
  54. 540 IF X=6 THEN 1470
  55. 550 PRINT CHR$(7):GOTO 400
  56. 560 IF P$="Line-of-sight" THEN PRINT CHR$(7);"Troposcatter only!":GOTO 390:ELSE PRINT "N is presently ";N;" New N-value";
  57. 570 INPUT N
  58. 580 L4=.2*(N-310)
  59. 590 PRINT " Correction is ";FNY(L4);" dB."
  60. 600 PRINT " The corrected path loss is ";FNY(L0+L4);" dB."
  61. 610 GOTO 390
  62. 620 PRINT CHR$(7);"Can't do that!"
  63. 630 PRINT: REM Input/update station parameters.
  64. 640 IF N=1 THEN TT$="A"
  65. 650 IF N=2 THEN TT$="B"
  66. 660 PRINT "Station ";TT$; " identifier ";A$(N);
  67. 670 IF A$(N)<>" " THEN 690
  68. 680 INPUT A$(N)
  69. 690 PRINT:PRINT " Height of station (m asl) ";
  70. 700 IF H1(N)=0 THEN 720
  71. 710 PRINT H1(N):GOTO 730
  72. 720 INPUT H1(N)
  73. 730 PRINT " Height of obstruction (m asl) ";
  74. 740 IF H2(N)=0 THEN 760
  75. 750 PRINT H2(N):GOTO 770
  76. 760 INPUT H2(N)
  77. 770 PRINT " Distance to obstruction (km) ";
  78. 780 IF D1(N)=0 THEN 800
  79. 790 PRINT D1(N):GOTO 810
  80. 800 INPUT D1(N)
  81. 810 PRINT " Antenna vertical beamwidth (degrees) ";
  82. 820 IF A(N)=0 THEN 840
  83. 830 PRINT A(N) :GOTO 850
  84. 840 INPUT A(N)
  85. 850 IF N=1 THEN 910
  86. 860 PRINT:PRINT " Distance between stations (km) ";
  87. 870 IF D=0 THEN 890
  88. 880 PRINT D:GOTO 910
  89. 890 INPUT D
  90. 900 REM ZERO TRAP
  91. 910 IF A(N)=0 THEN 620
  92. 920 IF H1(N)=0 THEN 620
  93. 930 IF H2(N)=0 THEN 620
  94. 940 IF D1(N)=0 THEN 620
  95. 950 IF N=1 THEN RETURN
  96. 960 IF D=0 THEN 620
  97. 970 RETURN 
  98. 980 REM CHANGE FREQ.AND ANT. BEAMWIDTHS
  99. 990 PRINT:PRINT"New frequency (MHz)";
  100. 1000 INPUT F
  101. 1010  PRINT:PRINT "Station ";A$(1);" vertical beamwidth (degrees)";
  102. 1020 INPUT A(1)
  103. 1030 PRINT "Station ";A$(2);" vertical beamwidth (degrees)";
  104. 1040 INPUT A(2)
  105. 1050 GOTO 150
  106. 1060 REM CHANGE STATION PARAMETERS
  107. 1070 N=1:GOTO 1090
  108. 1080 N=2
  109. 1090 GOSUB 1160: GOSUB 630: GOTO 150
  110. 1100 REM CALCULATES STATION ANGLES
  111. 1110 H3=(H2(N)-H1(N))/(D1(N)*1000)
  112. 1120 B(N)=(H3-(D1(N)/(2*R1)))
  113. 1130 B(N)=B(N)*180/PI
  114. 1140 RETURN 
  115. 1150 REM PARAMS TO CHANGE MADE=0
  116. 1160 PRINT:PRINT:PRINT "Which station parameter(s) will you want to to change in the next run?":PRINT
  117. 1170 PRINT TAB(23);"1     Station height "
  118. 1180 PRINT TAB(23);"2     Obstruction height "
  119. 1190 PRINT TAB(23);"3     Obstruction distance"
  120. 1200 PRINT TAB(23);"4     Antenna beamwidth"
  121. 1210 PRINT TAB(23);"5     Station identifier"
  122. 1220 IF N=2 THEN PRINT TAB(23);"6     Distance A to B"
  123. 1230 PRINT TAB(20);"or 7     All parameters"
  124. 1240 PRINT:GOTO 1250
  125. 1250 INPUT "Number of parameter to change (or 8 = ready to run) : ";X
  126. 1260 IF X<1 THEN 1480
  127. 1270 IF X>8 THEN 1480
  128. 1280 IF X=8 THEN RETURN
  129. 1290 IF X=7 THEN GOSUB 1400
  130. 1300 IF X=6 THEN 1370
  131. 1310 IF X=5 THEN A$(N)=" "
  132. 1320 IF X=4 THEN A(N)=0
  133. 1330 IF X=3 THEN D1(N)=0
  134. 1340 IF X=2 THEN H2(N)=0
  135. 1350 IF X=1 THEN H1(N)=0
  136. 1360 GOTO 1250
  137. 1370 IF N=1 THEN PRINT"You can't do that!":PRINT CHR$(7)
  138. 1380 IF N=1 THEN GOTO 1480
  139. 1390 D=0:GOTO 1480
  140. 1400 REM RESET ALL STATION PARAMETERS
  141. 1410 D1(N)=0
  142. 1420 H1(N)=0:H2(N)=0:A(N)=0
  143. 1430 A$(N)=" "
  144. 1440 IF N=2 THEN D=0
  145. 1450 RETURN 
  146. 1460 REM ERROR TRAP
  147. 1470 END
  148. 1480 :
  149.